// 给定两个字符串 s 和 t，它们只包含小写字母。
// 字符串 t 由字符串 s 随机重排，然后在随机位置添加一个字母。
// 请找出在 t 中被添加的字母。

const findTheDifference = function (s: string, t: string): string {
    const hashMap = new Map<string, number>();// 声明哈希表
    // 哈希表统计词频
    for (let i = 0; i < s.length; i++) {
        hashMap.set(s[i], (hashMap.get(s[i]) || 0) + 1);
    }
    // 检查添加字母
    for (let i = 0; i < t.length; i++) {
        // 如果发现t中有新字符或存在字符多余就直接返回当前字符
        if (!hashMap.has(t[i]) || (hashMap.get(t[i]) || 0) <= 0) {
            return t[i];
        }
        // 动态更新哈希表
        hashMap.set(t[i], (hashMap.get(t[i]) || 0) - 1);
    }
    return t;
};


// 这道题目总的来说非常的基础了
// 基本就是考察一个哈希表的使用，先走一遍原字符拿到频数信息
// 再走一遍新字符串检查是否有新字符或存在字符多余
// 如果有就直接返回当前字符。